/**
 * @file sd_card.h
 * @brief SD卡操作模块头文件
 */

#ifndef SD_CARD_H
#define SD_CARD_H
#include <stdbool.h>  // 新增头文件
#include "esp_err.h"

/**
 * @brief 初始化SD卡
 * 
 * @return ESP_OK表示成功，其他错误码表示失败
 */
esp_err_t sd_card_init(void);

/**
 * @brief 反初始化SD卡
 * 
 * @return ESP_OK表示成功，其他错误码表示失败
 */
esp_err_t sd_card_deinit(void);

/**
 * @brief 向SD卡写入数据
 * 
 * @param path 文件路径
 * @param data 要写入的数据
 * @param size 数据大小（字节）
 * @return 实际写入的字节数，负数表示错误
 */
int sd_card_write(const char* path, const void* data, size_t size);

/**
 * @brief 从SD卡读取数据
 * 
 * @param path 文件路径
 * @param buffer 存储读取数据的缓冲区
 * @param size 缓冲区大小（字节）
 * @return 实际读取的字节数，负数表示错误
 */
int sd_card_read(const char* path, void* buffer, size_t size);

/**
 * @brief 检查文件是否存在
 * 
 * @param path 文件路径
 * @return true表示存在，false表示不存在
 */
bool sd_card_file_exists(const char* path);

/**
 * @brief 删除文件
 * 
 * @param path 文件路径
 * @return ESP_OK表示成功，其他错误码表示失败
 */
esp_err_t sd_card_delete(const char* path);

#endif // SD_CARD_H    